package com.doubao.device.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.doubao.common.result.Result;
import com.doubao.device.dto.CategoryDTO;
import com.doubao.device.dto.request.CreateCategoryRequest;
import com.doubao.device.dto.request.UpdateCategoryRequest;
import com.doubao.device.entity.DeviceCategory;

import java.util.List;

/**
 * 智能体分类服务接口
 */
public interface DeviceCategoryService extends IService<DeviceCategory> {

    /**
     * 创建分类
     *
     * @param request 创建请求
     * @return 创建结果
     */
    Result<CategoryDTO> createCategory(CreateCategoryRequest request);

    /**
     * 更新分类
     *
     * @param request 更新请求
     * @return 更新结果
     */
    Result<CategoryDTO> updateCategory(UpdateCategoryRequest request);

    /**
     * 删除分类
     *
     * @param categoryId 分类ID
     * @return 删除结果
     */
    Result<Void> deleteCategory(Long categoryId);

    /**
     * 获取分类详情
     *
     * @param categoryId 分类ID
     * @return 分类详情
     */
    Result<CategoryDTO> getCategoryDetail(Long categoryId);

    /**
     * 获取所有分类
     *
     * @return 分类列表
     */
    Result<List<CategoryDTO>> getAllCategories();

    /**
     * 获取启用的分类
     *
     * @return 启用的分类列表
     */
    Result<List<CategoryDTO>> getEnabledCategories();

    /**
     * 更新分类排序
     *
     * @param categoryId 分类ID
     * @param sortOrder 排序值
     * @return 更新结果
     */
    Result<Void> updateSortOrder(Long categoryId, Integer sortOrder);

    /**
     * 更新分类状态
     *
     * @param categoryId 分类ID
     * @param status 状态 1:启用 0:禁用
     * @return 更新结果
     */
    Result<Void> updateStatus(Long categoryId, Integer status);
}